// 把fullPath转换成大驼峰
function toPascalCase(str) {
  return str
    .split(':')[0]
    .split('/')
    .map((part) => {
      return part
        .split('-')
        .map(word => word.charAt(0).toUpperCase() + word.slice(1))
        .join('')
    })
    .join('')
}

export default {
  description: '根据组件在views文件夹中的相对路径，生成对应的前端初始文件',
  prompts: [
    {
      type: 'list',
      name: 'path',
      message: '请选择创建目录',
      // 选择列表
      choices: ['./temp/views'],
    },
    {
      type: 'input',
      name: 'fullpath',
      message: `请输入组件在views文件夹中的相对路径，如 dashboard/analysis，多个请用','隔开:`,
      // 验证
      validate: (v) => {
        if (!v) {
          return '请输入组件在views文件夹中的相对路径'
        }
        else {
          return true
        }
      },
    },
  ],
  actions: (data) => {
    const actions = data.fullpath
      .replaceAll(' ', '')
      .split(',')
      .map((item) => {
        const name = toPascalCase(item)
        return {
          type: 'add',
          path: `${data.path}/${item}/index.vue`, // 文件生成路径
          force: true, // 是否覆盖上次生成的内容
          templateFile: './templates/viewStarter.vue.hbs', // 生成的文件的模板
          data: {
            name, // 即将被格式化的数据
          },
        }
      })
    return actions
  },
}
